﻿// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符， 
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
// 例子： 
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
Date.prototype.Format = function (fmt) { //author: meizz 
    var o = {
        "M+": this.getMonth() + 1, //月份 
        "d+": this.getDate(), //日 
        "h+": this.getHours(), //小时 
        "m+": this.getMinutes(), //分 
        "s+": this.getSeconds(), //秒 
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
        "S": this.getMilliseconds() //毫秒 
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

function GetHourFirstMinute(date) {
    var hourFirstMinute = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), 0, 0);
    return hourFirstMinute;
}
function GetHourLastMinute(date) {
    var hourLastMinute = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), 59, 0);
    return hourLastMinute;
}
function GetDayFirstMinute(date) {
    var dayFirstHour = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
    return dayFirstHour;
}
function GetDayLastMinute(date) {
    var dayLastHour = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 0);
    return dayLastHour;
}
function GetWeekFirstDay(date) {
    var weekFirstDay;
    if (date.getDay() == 0) {
        weekFirstDay = new Date(date - 6 * 86400000);
    }
    else {
        weekFirstDay = new Date(date - (date.getDay() - 1) * 86400000);
    }
    return weekFirstDay;
}
function GetWeekLastDay(date) {
    var weekFirstDay;
    if (date.getDay() == 0) {
        weekFirstDay = new Date(date - 6 * 86400000);
    }
    else {
        weekFirstDay = new Date(date - (date.getDay() - 1) * 86400000);
    }
    var weekLastDay = new Date((weekFirstDay / 1000 + 6 * 86400) * 1000);
    return weekLastDay;
}
function GetMonthFirstDay(date) {
    var monthFirstDay = new Date(date.getFullYear(), date.getMonth(), 1);
    return monthFirstDay;
}
function GetMonthLastDay(date) {
    var monthNextFirstDay = new Date(date.getFullYear(), date.getMonth() + 1, 1);
    var monthLastDay = new Date(monthNextFirstDay - 86400000);
    return monthLastDay;
}
function GetYearFirstDay(date) {
    var yearFirstDay = new Date(date.getFullYear(), 1, 1);
    return yearFirstDay;
}
function GetYearLastDay(date) {
    var yearNextFirstDay = new Date(date.getFullYear() + 1, 0, 1);
    var yearLastDay = new Date(yearNextFirstDay - 86400000);
    return yearLastDay;
}

function GetDateFormat(date) {
    var strs = date.split("-");
    return strs[1] + "-" + strs[0] + "-" + strs[2];
}

function GetUTCDate(date) {
    var yr = date.getUTCFullYear();
    var mo = date.getUTCMonth();
    var dy = date.getUTCDate();
    var hr = date.getUTCHours();
    var min = date.getUTCMinutes();
    var sec = date.getUTCSeconds();
    return new Date(yr, mo, dy, hr, min, sec);
}